package net.csdn.business.notify.api.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.csdn.business.notify.common.model.dto.BatchDeleteMessageDTO;
import net.csdn.business.notify.common.model.entity.NotifyPrivateLetter;
import net.csdn.business.notify.common.model.query.NotifyPrivateLetterQuery;
import net.csdn.business.notify.common.model.vo.NotifyPrivateLetterVO;
import net.csdn.business.notify.common.model.vo.UserPrivateLetterVO;

import java.util.List;

/**
 * 通知中心-用户私信Service接口
 * 
 * @author ruoyi
 * @date 2023-11-27
 */
public interface INotifyPrivateLetterService extends IService<NotifyPrivateLetter>
{

    /**
     * 分页查询通知中心-用户私信
     *
     * @param query 通知中心-用户私信详细信息
     * @return 通知中心-用户私信
     */
    public Page<NotifyPrivateLetterVO> findPageList(NotifyPrivateLetterQuery query);

    /**
     * 根据id查询通知中心-用户私信详细信息
     * 
     * @param id 通知中心-用户私信主键
     * @return 通知中心-用户私信
     */
    public NotifyPrivateLetterVO selectNotifyPrivateLetterById(String id);

    /**
     * 查询通知中心-用户私信列表
     * 
     * @param query 通知中心-用户私信
     * @return 通知中心-用户私信集合
     */
    public List<NotifyPrivateLetterVO> selectNotifyPrivateLetterList(NotifyPrivateLetterQuery query);

    /**
     * 删除通知中心-用户私信信息
     * 
     * @param id 通知中心-用户私信主键
     * @return 结果
     */
    public Integer deleteNotifyPrivateLetterById(String id);


    /**
     * @Author zhangyl
     * @Description 发送前，批量保存通知记录
     * @Date 14:25 2023/12/1
     * @Param
     * @return
     **/
    public Integer insertBatch(List<NotifyPrivateLetter> list);



    /**
     * 前台用户私信列表
     *
     * @param query 通知中心-用户私信详细信息
     * @return 通知中心-用户私信
     */
    public Page<UserPrivateLetterVO> userPrivatePage(NotifyPrivateLetterQuery query);

    /**
     * 前台用户私信对话列表
     *
     * @param query 通知中心-前台用户私信对话列表
     * @return 通知中心-用户私信
     */
    public Page<UserPrivateLetterVO> userDialoguePage(NotifyPrivateLetterQuery query);


    /**
     * @Author zhangyl
     * @Description 查询私信未读消息数量
     * @Date 17:27 2023/12/12
     * @Param
     * @return
     **/
    public int getUnReadCount(String currUserId);

    /**
     * @Author zhangyl
     * @Description 标记所有未读私信通知为已读。
     * @Date  2024/05/09
     * @Param
     * @return
     **/
    public int markRead(String currUserId);


    /**
     * @Author zhangyl
     * @Description 批量删除私信
     * @Date  2024/05/09
     * @Param
     * @return
     **/
    public void batchDelete(BatchDeleteMessageDTO params);
}
